package com.xuelang.pipeline.app.task;


import com.xuelang.pipeline.client.task.dto.TaskInstanceDTO;

import java.util.List;

/**
 * <p>任务实例服务接口</p>
 *
 * @author : yixin.lys
 * @date : 2024-06-25 09:57
 **/
public interface TaskInstanceService {

    /**
     * 根据流水线实例id获取任务实例数组
     *
     * @param pipelineInstanceCode
     * @return
     */
    List<TaskInstanceDTO> queryByPipelineInstanceId(String pipelineInstanceCode);

    /**
     * 根据任务实例code获取任务实例
     *
     * @param code
     * @return
     */
    TaskInstanceDTO queryByTaskCode(String code);

    /**
     * 新增流水线实例
     *
     * @param taskInstance
     */
    void add(TaskInstanceDTO taskInstance);


    /**
     * 更新流水线实例
     *
     * @param taskInstance
     */
    void update(TaskInstanceDTO taskInstance);


    /**
     * 根据id批量删除
     *
     * @param idList
     */
    void removeByIds(List<String> idList);

    /**
     * 根据流水线实例id批量删除
     *
     * @param pipelineInstanceCodeList
     */
    void removeByPipelineInstanceIdList(List<String> pipelineInstanceCodeList);

    /**
     * 根据任务实例Uuid批量删除
     *
     * @param taskUuidList
     */
    void removeByTaskUuidList(List<String> taskUuidList);

    /**
     * 人工卡点 审批实现
     *
     * @param taskUuid
     * @param type
     * @return
     */
    Boolean approveTaskInstance(String taskUuid, String type);

    /**
     * 查询对应组件的构建output信息（imageTag信息）
     * @param pipelineInstanceCode
     * @param taskInstanceCode
     * @return
     */
    List<String> queryBuildOutput(String pipelineInstanceCode, String taskInstanceCode);
}
